package com.sq.partner.manager.service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.sq.partner.manager.mybatis.model.ActirationCardMinMaxDto;
import com.sq.partner.manager.mybatis.model.ActirationCardReceiveDto;
import com.sq.partner.manager.mybatis.model.ActirationCardResultDto;
import com.sq.partner.manager.mybatis.model.ActivationCardSheet;
import com.sq.partner.manager.mybatis.model.DeptDto;
import com.sq.partner.manager.mybatis.model.GatewayUser;
import com.sq.partner.manager.util.Page;

public interface ActirationCardCirculationService {

	/**
	 * 根据开始卡号和数量
	 * 查询当前机构下的卡号信息（带分页）
	 * @param user
	 * @param page
	 * @param startNo
	 * @param number
	 * @return
	 * @throws Exception
	 */
	public Page<String> queryCardNum(Page<String> page) throws Exception;
	/**
	 * 查询当前机构下卡模板的最大最小号
	 * @param map
	 * @return
	 * @throws Exception
	 */
	public ActirationCardMinMaxDto queryMinMax(Map<String,Object> map) throws Exception;
	/**
	 * 查询当前机构可流转的卡单汇总
	 * @param map
	 * @return
	 * @throws Exception
	 */
	public Page<ActirationCardMinMaxDto> queryAllMinMax(Page<ActirationCardMinMaxDto> page) throws Exception;
	/**
	 * 卡流转下发
	 * @param session
	 * @param cardId 卡模板id
	 * @param nOList 卡号list
	 * @param number 数量
	 * @param toDep 目的机构
	 * @param flag 操作标志（1：上交；0下发）
	 * @return
	 * @throws Exception
	 */
	public ActirationCardResultDto circulation(GatewayUser user,String cardId,String startNo,String number,String toDep,String flag) throws Exception;
	/**
	 * 接收流转
	 * @param user
	 * @param nOList 流转list
	 * @return
	 * @throws Exception
	 */
	public ActirationCardResultDto receiveCard(GatewayUser user,String cardId,List<String> nOList) throws Exception;
	/**
	 * 查询待接收列表
	 * @param page
	 * @return
	 * @throws Exception
	 */
	public Page<ActirationCardReceiveDto> queryReceive(Page<ActirationCardReceiveDto> page) throws Exception;
	/**
	 * 待接收详细卡号列表
	 * @param map
	 * @return
	 * @throws Exception
	 */
	public Page<String> queryReceiveList(Page<String> page) throws Exception;
	/**
	 * 获取当前机构的下级机构
	 * @param userCom
	 * @return
	 * @throws Exception
	 */
	public List<DeptDto> queryComDown(String userCom) throws Exception;
	/**
	 * 获取本级及下级机构
	 * @param userCom
	 * @return
	 * @throws Exception
	 */
	public List<DeptDto> queryComAndDown(String userCom) throws Exception;
	/**
	 * 获取当前机构上一级机构
	 * @param userCom
	 * @return
	 * @throws Exception
	 */
	public List<DeptDto> queryComUp(String userCom) throws Exception;
	/**
	 * 流转查询可用最大数量
	 * @return
	 * @throws Exception
	 */
	public String queryMaxnum(HashMap<String, Object> paramMap) throws Exception;
	/**
	 * 接收查询可用最大数量
	 * @param paramMap
	 * @return
	 * @throws Exception
	 */
	public String queryjsMaxnum(HashMap<String, Object> paramMap) throws Exception;
	/**
	 * 查询库存总量
	 * @param page
	 * @return
	 * @throws Exception
	 */
	public Page<ActivationCardSheet> queryStock(Page<ActivationCardSheet> page) throws Exception;
	/**
	 * 延期操作 根据list
	 * @param user
	 * @param delayList
	 * @param date
	 * @return
	 * @throws Exception
	 */
	public ActirationCardResultDto cardDelayList(GatewayUser user,List<String> delayList,String date) throws Exception;
	/**
	 * 延期操作，根据起止号
	 * @param user
	 * @param startNo
	 * @param endNo
	 * @param date
	 * @return
	 * @throws Exception
	 */
	public ActirationCardResultDto cardDelaybyNoNum(GatewayUser user,String startNo,String endNo,String date) throws Exception;
	/**
	 * 定时更改状态为过期
	 * @param card
	 * @return
	 * @throws Exception
	 */
	public boolean updateStatusForTimerTask (HashMap<String,Object> map)throws Exception;
}
